import Serializer=require('./../../base/Serializer');
import ChartAxisStyle=require('./item/ChartAxisStyle');
import FontStyle=require('./item/FontStyle');
import LineStyle=require('./item/LineStyle');
import FColorBase=require('./../../color/FColorBase');
import FColor=require('./../../color/FColor');
import GCJ_CLASS_TYPE=require('./../../../common/GCJ_CLASS_TYPE');
import Parser=require('./../../base/Parser');


export = ChartApperanceBase;


/**
 * 图表的外观属性基类
 * @author 
 *
 */
class ChartApperanceBase extends Serializer{
    // 1、修改图表样式（配色6、字体\颜色\字号等信息)
    public colors: Array<FColorBase>=[];
    public font_style: FontStyle=new FontStyle();
    
    // 3、序列[即数据]的显示\字体\颜色\字号
    public sequence: FontStyle=new FontStyle();
    public sequence_graph: number=0;// 序列[即数据]前方的图形， 0无／1圆圈／2矩形／3菱形
    
    public constructor(g?) {
        super(g);
        
        this.ct=GCJ_CLASS_TYPE.CLASS_TYPE_ChartApperanceBase;
    }
    // 取颜色
    public getColor(index:number):FColorBase{
        return this.colors[index%this.colors.length];
    }
    // 初始化数据
    public initData(){
        this.colors.push(
            FColor.from(48,88,138),
            FColor.from(95,149,76),
            FColor.from(229,160,71),
            FColor.from(186,47,52),
            FColor.from(110,63,120),
            FColor.from(125,128,127));
    }
    
    // 从json对象(注意不是json字符串)中解析
    // 参数：self,true表示只拷贝自身数据，而不拷贝子的数据
    public fromJson(jsonObj,versionId,self?) {
        super.fromJson(jsonObj,versionId,self);
        
        this.colors.splice(0,this.colors.length);// 清空colors
        
        for(var i=0;i<jsonObj.colors.length; i++) {
            var item=jsonObj.colors[i];
            this.colors.push(Parser.fromUnknownJson(item,versionId,this.getGlobalData()));
        }
        
        if(jsonObj.font_style!=null) {
            this.font_style.fromJson(jsonObj.font_style,versionId);
        }
        if(jsonObj.sequence!=null) {
            this.sequence.fromJson(jsonObj.sequence,versionId);
        }
        
        this.sequence_graph=jsonObj.sequence_graph;
    }
    // 转成json字符串
    public toJson(): string {
        // 去掉父json字符串的头尾
        var superJson=super.toJson();
        superJson=superJson.substr(1,superJson.length-2);

        var ret='{';
        ret+=superJson;
        
        
        // colors
        ret+=',';
        ret+='"colors":';
        ret+='[';
        for(var i=0;i<this.colors.length;i++) {
            if(i>0) {
                ret+=',';
            }
            ret+=this.colors[i].toJson();
        }
        ret+=']';
                 
        // font_style
        if(this.font_style){
            ret+=',';
            ret+='"font_style":';
            ret+=this.font_style.toJson();            
        }
        // sequence
        if(this.sequence) {
            ret+=',';
            ret+='"sequence":';
            ret+=this.sequence.toJson();
        }
        // sequence_graph
        ret+=',';
        ret+='"sequence_graph":';
        ret+=this.sequence_graph;   

        ret+='}';
        return ret;
    }
//SJG_MARK_APPEND--------------------
}//SJG_MARK_END-------------------------